/*
 * Created on Apr 9, 2005
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package org.scohen.juploadr.app;

import java.util.List;
import java.util.Set;

import org.scohen.juploadr.app.geo.GeoLocation;
import org.scohen.juploadr.app.tags.Tag;

/**
 * @author steve
 * 
 * TODO To change the template for this generated type comment go to Window -
 * Preferences - Java - Code Style - Code Templates
 */
public interface UploadImage {
    public static final int STATE_UPLOADED = 1;

    public static final int STATE_DATA_ENTERED = 2;

    public static final int STATE_REMOVED = 4;

    public static final int STATE_UPLOADING = 8;

    public static final int STATE_NEW = 0;

    /**
     * @return Returns the description.
     */
    public abstract String getDescription();

    public abstract boolean hasDescription();

    /**
     * @return Returns the tags.
     */
    public abstract Set<Tag> getTags();

    public abstract boolean hasTags();

    /**
     * @param tags
     *            The tags to set.
     */
    public abstract void setTags(Set<Tag> tags);

    /**
     * @return Returns the title.
     */
    public abstract String getTitle();

    public abstract boolean hasTitle();

    /**
     * @param title
     *            The title to set.
     */
    public abstract void setTitle(String title);

    public abstract String getKey();

    /**
     * @return Returns the imagePath.
     */
    public abstract String getImagePath();

    /**
     * @param imagePath
     *            The imagePath to set.
     */
    public abstract void setImagePath(String imagePath);

    /**
     * @return Returns the state.
     */
    public abstract int getState();

    /**
     * @param state
     *            The state to set.
     */
    public abstract void setState(int state);

    /**
     * @return Returns the familyViewable.
     */
    public abstract boolean isFamilyViewable();

    /**
     * @param familyViewable
     *            The familyViewable to set.
     */
    public abstract void setFamilyViewable(boolean familyViewable);

    /**
     * @return Returns the friendViewable.
     */
    public abstract boolean isFriendViewable();

    /**
     * @param friendViewable
     *            The friendViewable to set.
     */
    public abstract void setFriendViewable(boolean friendViewable);

    /**
     * @return Returns the publiclyVisible.
     */
    public abstract boolean isPubliclyVisible();

    /**
     * @param publiclyVisible
     *            The publiclyVisible to set.
     */
    public abstract void setPubliclyVisible(boolean publiclyVisible);

    public abstract boolean isRescaled();

    public abstract int getRank();

    public abstract String getPhotoId();

    public abstract int getRotation();

    public abstract void setRotation(int rotation);
    
    public abstract void setLocation(GeoLocation loc);
    
    public abstract GeoLocation getLocation();
}